/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CapaGUI;

import CapaDTO.Pago;
import CapaNegocio.Negocio;
import CapaNegocio.NegocioInsert;
import Config.Sucursal;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;

public class myeditor extends AbstractCellEditor implements TableCellEditor, ActionListener {

    Boolean currentValue;
    JButton button;
    protected static final String EDIT = "edit";
    private JTable jTable1;
    String usuario;

    public myeditor(JTable jTable1, String user) throws IOException {
        button = new JButton();
        button.setActionCommand(EDIT);
        button.addActionListener(this);
        button.setBorderPainted(false);
        this.jTable1 = jTable1;
        this.usuario = user;
    }

    public boolean isCellEditable(int row, int col) {
        //Note that the data/cell address is constant,
        //no matter where the cell appears onscreen.
        if (col < 5) {
            return false;
        } else {
            return true;
        }
    }

    public void actionPerformed(ActionEvent e) {
        // mymodel t = (mymodel) jTable1.getModel();
        // t.addNewRecord();



        // TODO add your handling code here:

        try {
            //  GUI1 jf = new GUI1();//por esto se me cierra el programa.. u.
            String Mes[] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octobre", "Noviembre", "Diciembre"};
            Sucursal su = new Sucursal();
            Negocio neg = new Negocio();
            NegocioInsert ni = new NegocioInsert();
            Iterator it = neg.getListarPd_id("" + jTable1.getValueAt(jTable1.getSelectedRow(), 7)).iterator();
            Date fechaActual = new Date();
            SimpleDateFormat formato = new SimpleDateFormat("yyyyMMdd");
            String FechaDia = formato.format(fechaActual).substring(6, 8);
            String FechaMesActual = formato.format(fechaActual).substring(4, 6);
            String FechaAño = formato.format(fechaActual).substring(0, 4);

            if (neg.eliminar(usuario)) {
                while (it.hasNext()) {
                    Pago pag = (Pago) it.next();

                    if (!neg.Cerrado(Mes[Integer.parseInt(pag.getFecha().substring(5, 7)) - 1], Integer.parseInt(pag.getFecha().substring(0, 4)), su.getSucursal())) {
                        int opcion = 0;
                        opcion = JOptionPane.showConfirmDialog(null, "¿Desea Eliminar esta Liquidacion?\n", "Confirmacion", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);

                        if (opcion == JOptionPane.YES_OPTION) {
                            if (pag.getPd_id() == Integer.parseInt("" + jTable1.getValueAt(jTable1.getSelectedRow(), 7))) {
                                ni.ElimSave(pag, usuario, JOptionPane.showInputDialog("Motivo de la eliminacion"), FechaDia + "/" + FechaMesActual + "/" + FechaAño);
                                ni.EliminiarLiquidacion("" + jTable1.getValueAt(jTable1.getSelectedRow(), 7), su.getSucursal());
                            }
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "Este Mes se encuentra CERRADO, la información \n de este informe NO puede ser MODIFICADA.", "Error", JOptionPane.WARNING_MESSAGE);
                    }
                }
            } else {
                JOptionPane.showMessageDialog(null, "No puede Eliminar", "Aviso", JOptionPane.WARNING_MESSAGE);

            }
        } catch (IOException ex) {
            Logger.getLogger(myeditor.class.getName()).log(Level.SEVERE, null, ex);
        }
        fireEditingStopped();
    }

    //Implement the one CellEditor method that AbstractCellEditor doesn't.
    public Object getCellEditorValue() {
        return currentValue;
    }

    //Implement the one method defined by TableCellEditor.
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        // Va a mostrar el botón solo en la última fila.
        // de otra forma muestra un espacio en blanco.
//        if (row == table.getModel().getRowCount() - 1) {
        currentValue = true;
        return button;
//          }
//           return new JLabel();
    }
}
